1. Field of the Invention
The present invention is directed to information storage and display systems utilizing storage devices, and more particularly, to video recording systems that store and playback streaming video data packets.
2. Description of the Related Art
Audiovisual information is advantageously compressed by audiovisual data storage systems, thereby expressing the information by using less data. Compression reduces the amount of storage needed for a given amount of source material, and it reduces the bandwidth needed for the transfer of the data. One standard for audiovisual compression is MPEG (Moving Picture Experts Group) compression which was developed by a joint technical committee of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC). The MPEG compression standard is outlined in “Information Technology: Generic Coding of Moving Pictures and Associated Audio Information: Systems,” International Standard ISO/IEC 13818-1:1996 (E), which is incorporated by reference herein.
For the transmission of audiovisual programming, various programs transmitted from the outputs of various MPEG encoders are multiplexed together into a transport stream, the transport stream comprising multiple series of fixed-size data packets, along with metadata which describes the transport stream. Each data packet comprises a header and a payload. The header contains various information regarding the data packet, including the packet identifier code (PID) which identifies the program or data to which the data packet belongs. The metadata includes a program association table (PAT) that lists the various programs comprising the transport stream and points to a program map table (PMT) that lists the corresponding data packets. The metadata can also include conditional access information (i.e., encryption).
The different series of data packets of the transport stream are generally generated by different MPEG encoders, which typically have different compression factors and different system time clocks (STCs). The different system time clocks generally are not synchronized to one another. In changing from one program to the next, an MPEG decoder synchronizes its STC with the STC which was used during the encoding of each program. This synchronization avoids jitter in the decoded data stream, and avoids overrun or underrun of the memory buffers of the MPEG decoder. To provide the synchronization data needed to decode a series of data packets, the data packets are encoded with program clock reference (PCR) information.
During the encoding of audiovisual data, a fixed-frequency (e.g., 27 MHz) STC of an MPEG encoder drives a constantly running binary counter, the value of which is sampled periodically and placed in the data packet headers as PCR information. At the decoder, the PCR value of a data packet is compared with a local PCR value which is driven by a STC with nominally the same frequency. The difference in these PCR values (the PCR phase error) thereby allows the MPEG decoder to properly synchronize its STC to the STC of the MPEG encoder for the selected series of data packets, thereby duplicating the same frame rate used at the MPEG encoder with the frame rate generated at the MPEG decoder. Note that because the timing of the presentation of these PCR values at the MPEG decoder is critical for the MPEG decoder to operate correctly, this PCR method relies on the MPEG decoder receiving the series of data packets for a particular program with the same interpacket time intervals as the series of data packets had when they were transmitted from the MPEG encoder.
U.S. Pat. No. 5,467,137 issued to Zdepski, which is incorporated by reference herein, addresses the problem of varying transmission times among a series of data packets being transmitted across a system such as the Internet. Zdepski discloses an apparatus and method for providing synchronization for a transmitted multilayered compressed video signal by inserting auxiliary transport packets which include modifiable differential time codes or count values. These differential count values are used to account for the incremental delays the transport packets incur during the signal forming/transmission process.